package net.esj.basic.dao.jdbc;

import net.esj.basic.dao.Dao;
import net.esj.basic.dao.QueryBuilderDao;
import net.esj.basic.utils.Pagination;
import net.melon.jdbc.JdbcTemplate;
import net.melon.jdbc.core.RowMapper;

public interface JdbcDao extends Dao,QueryBuilderDao {

	JdbcTemplate getJdbcTemplate();
	
	/**
	 * 目前只支持MYSQL
	 * @param <T>
	 * @param sql
	 * @param rowmapper
	 * @param page
	 * @return
	 */
	<T> Pagination<T> queryPage(String sql,RowMapper<T> rowmapper,Pagination<T> page);

	/**
	 * 目前支持MYSQL和SQLServer
	 * @param sql
	 * @param rowmapper
	 * @param page
	 * @param orderStr 排序的sql
	 * @return
	 */
	<T> Pagination<T> queryPage(String sql,RowMapper<T> rowmapper,Pagination<T> page, String orderStr);
	
	/**
	 * 目前只支持MYSQL
	 * @param <T>
	 * @param sql
	 * @param objs
	 * @param rowmapper
	 * @param page
	 * @return
	 */
	<T> Pagination<T> queryPage(String sql,Object[] objs,RowMapper<T> rowmapper,Pagination<T> page);
	
	/**
	 * 目前只支持MYSQL
	 * @param <T>
	 * @param sql
	 * @param objs
	 * @param types
	 * @param rowmapper
	 * @param page
	 * @return
	 */
	<T> Pagination<T> queryPage(String sql,Object[] objs,int[] types,RowMapper<T> rowmapper,Pagination<T> page);
}
